﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

    <meta name="Description" content="Excel,NPOI,帮助,辅助类" />
    <meta name="Keywords" content="Excel,NPOI,帮助,辅助类" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name="Distribution" content="Global" />
    <meta name="Author" content="Erwin Aligam - ealigam@gmail.com" />
    <meta name="Robots" content="index,follow" />

    <link rel="stylesheet" href="../../images/HarvestField.css" type="text/css" />

    <title>小草技术笔记</title>
    <link rel="shortcut ico" href="/favicon.ico" />
    <link rel="bookmark" href="/favicon.ico" />
</head>

<body>
    <!-- wrap starts here -->
    <div id="wrap">

        <!--header -->
        <div id="header">

            <h1 id="logo-text"><a href="/index.html" title="">Tinygrass<span> Tech Blog</span></a></h1>
            <p id="slogan">不积跬步，无以至千里</p>

            <div id="header-links">
                <p>
                    <a href="/index.html">主页</a> |
                    <a href="/index.html">联系作者</a> |
                    <a href="/index.html">站点图</a>
                </p>
            </div>

            <!--header ends-->
        </div>

        <!-- navigation starts-->
        <div id="nav">

            <div id="light-brown-line"></div>

            <ul>
                <li id="current"><a href="../index.html">  主页  </a></li>
                <li><a href="index.html">  专栏  </a></li>
                <li><a href="index.html">  下载  </a></li>
                <li><a href="index.html">关于作者</a></li>
            </ul>

            <!-- navigation ends-->
        </div>

        <!-- content-wrap starts -->
        <div id="content-wrap">

            <div id="main" style-="height:600px;overflow-y:scroll;">

                <a name="TemplateInfo"></a>
                <!-- 标题 -->
                <h2><a href="../index.html">ExcelHelper使用说明</a></h2>
                <p class="post-info"> Marlon | 2019-12-19 </p>
                <p>
                    通过预先定义好模型类，为字段配置好特性，包括字段名、是否为空、备注信息、导入时数据验证规则、导出时格式化格式，即可非常简单的使用以下功能。
                </p>
                <strong> 详细章节： </strong>
                <ul>
                    <li><a href="#定义模型类">定义模型类</a></li>
                    <li><a href="#导出Excel模板文件">导出Excel模板文件</a></li>
                    <li><a href="#导入数据">导入数据</a></li>
                    <li><a href="#导出数据">导出数据</a></li>
                </ul>
                <p>
                    采用了特性、反射、委托等技术。输出格式化、导入验证部分，不是很完善，可依据需要自己扩展。
                </p>

                <!-- 定义模型类 -->
                <h3 id="定义模型类">定义模型类</h3>
                <p>

                    <ul>
                        <li>可定义字段列的标题名</li>
                        <li>可定义字段列的备注</li>
                        <li>可定义字段列的宽度</li>
                        <li>可定义初步的数据验证规则，此处可在导入时做进一步的验证。</li>
                        <li>支持多组数据验证规则</li>
                        <li>可定义数据导出时的格式</li>
                    </ul>
                </p>
                <code>
                    public class ExcelTestModel<br />
                    {<br />
                    [ExcelColumn("序号", IsAllowNull = false)]<br />
                    [ExcelCellValueCheck(CheckType = ExcelCellValueCheckType.Range,MinValue = 0, MaxValue = 100000.0)]<br />
                    public long Id { get; set; }<br />
                    <br />
                    [ExcelColumn("姓名", IsAllowNull = false)]<br />
                    [ExcelCellValueCheck(CheckType = ExcelCellValueCheckType.Range,MinValue = 0, MaxValue = 10)]<br />
                    public string Name { get; set; }<br />
                    <br />
                    [ExcelColumn("年龄")]<br />
                    [ExcelCellValueCheck(CheckType = ExcelCellValueCheckType.Range,MinValue = 0, MaxValue = 150)]<br />
                    public int Age { get; set; }<br />
                    <br />
                    [ExcelColumn("生日")]<br />
                    [ExcelCellValueFormat(FormatType = ExcelCellValueFormatType.DateCn)]<br />
                    public DateTime Birthday { get; set; }<br />
                    <br />
                    [ExcelColumn("体重")]<br />
                    [ExcelCellValueCheck(CheckType = ExcelCellValueCheckType.Range, MinValue = 0, MaxValue = 100)]<br />
                    public float Weight { get; set; }<br />
                    <br />
                    [ExcelColumn("身高")]<br />
                    [ExcelCellValueCheck(CheckType = ExcelCellValueCheckType.Range,MinValue = 0, MaxValue = 30)]<br />
                    public decimal Height { get; set; }<br />
                    <br />
                    [ExcelColumn("钱包")]<br />
                    [ExcelCellValueCheck(CheckType = ExcelCellValueCheckType.Range,MinValue = 0)]<br />
                    public double Money { get; set; }<br />
                    <br />
                    }<br />
                </code>
                <p></p>

                <!-- 导出Excel模板文件 -->
                <h3 id="导出Excel模板文件">导出Excel模板文件</h3>
                <p>
                    导出的Excel模板由备注行、标题行、内容区组成。
                </p>
                <code>
                    filePhyName = Server.MapPath(fileName);<br />
                    var excelHelper = new ExcelHelper&lt;Excel_EnterpriceInfo&gt;();<br />
                    excelHelper.OutputTemplate(filePhyName);<br />

                </code>
                <p></p>

                <!-- 导入数据 -->
                <h3 id="导入数据">导入数据</h3>
                <p>
                    调用ImportDatas方法实现Excel文件中数据的导入，前提是Excel文件是基于上一步导出的Excel模板文件填充的数据。
                    参数有导入文件路径、标题行索引、输出错误信息的Excel文件路径、导入后数据的处理方法、导入的数据、导入后的结果。
                </p>
                <code>
                    List&lt;Excel_EnterpriceInfo&gt; lsData;<br />
                    var excelHelper = new ExcelHelper&lt;Excel_EnterpriceInfo&gt;();<br />
                    excelHelper.ImportDatas(fileFullName, 0, 1, 0, errFileFullName, DoEnterpriseImport,<br />
                    out lsData, out lsImportResult);<br />
                    <br />
                    bool DoEnterpriseImport(List&lt;Excel_EnterpriceInfo&gt; lsData, List&lt;ExcelRowImportResult&gt; lsImportResult)<br />
                    {<br />
                    <br />
                    }<br />
                </code>
                <p></p>

                <!-- 导出数据 -->
                <hd id="导出数据">导出数据</hd>
                <p>
                    调用SimpleExportDatas方法可实现简单的数据导出功能。
                </p>
                <code>
                    List&lt;Excel_EnterpriceInfo&gt; lsData;<br />
                    SimpleExportDatas(targetFilePath, sheetName, titleRowIndex, contentColumnIndex,  lsData)<br />
                </code>
                <p></p>


                <img style="width:100%;display:none;" alt="firefox" class="float-left" src="" />
                <p style="clear:both;"></p>

                <!-- 参考资料 -->
                <h3 id="参考资料">参考资料</h3>
                <blockquote>
                    <p>
                        <a href="http://static.tinygrass.tech/code/net/util/ExcelHelper.cs.txt" target="_blank" download='ExcelHelper.cs'> 点击下载源码</a>
                    </p>
                </blockquote>

                


                <br />

                <!-- main ends -->
            </div>

            <div id="sidebar">

                <!--<h3>天气</h3>-->
                <div>
                    <!--http://www.tianqi.com/dingzhi/-->
                    <iframe name="weather_inc" src="http://i.tianqi.com/index.php?c=code&id=7" style="border:solid 0px #7ec8ea" width="225" height="90" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
                    <!--<iframe name="weather_inc" src="http://i.tianqi.com/index.php?c=code&id=51" width="225" height="80" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>-->
                </div>

                <h3>内容导航</h3>
                <ul class="sidemenu">
                    <li><a href="#定义模型类">定义模型类</a></li>
                    <li><a href="#导出Excel模板文件">导出Excel模板文件</a></li>
                    <li><a href="#导入数据">导入数据</a></li>
                    <li><a href="#导出数据">导出数据</a></li>

                </ul>



                <h3>人生智言</h3>
                <p>
                    &quot;Every adversity, every failure, every heartache
                    carries with it the seed on an equal or greater benefit.&quot;
                </p>

                <p class="align-right">- Napoleon Hill</p>


                <!-- sidebar ends -->
            </div>

            <!-- content-wrap ends-->
        </div>

        <!-- column starts -->
        <div id="column-wrap">

            <div id="columns">

            </div>

            <!-- column-wrap ends-->
        </div>

        <!-- footer starts -->
        <div id="footer">

            <p>
                <span style="float:left">
                    <strong>CopyRight</strong>  &copy; 2018
                </span>
                <span>
                    <a href="http://www.beian.miit.gov.cn" target="_blank">粤ICP备18089031号-2</a>
                </span>
                <span style="float:right">
                    <a href="/index.html">Home</a> |
                    <a target="_blank" href="http://www.marlonstudio.top">MarlonStudio</a>
                </span>

            </p>

            <!-- footer ends -->
        </div>

        <!-- wrap ends here -->
    </div>

</body>
</html>
